package main

import "fmt"

func main()  {
	defer_call() //调用函数
}
func defer_call()  {
	defer func() {fmt.Println("打印前")}() //最后打印
	defer func() {fmt.Println("打印中")}() //然后打印
	defer func() {fmt.Println("打印后")}() //先打印
	panic("触发异常")


}

		/*
		输出内容为
		打印后
		panic: 触发异常
		打印中
		打印前

		defer的功能是延迟执行，但是多个defer是按照LIFO先进后出顺序执行。经过运行多次，发现，执行结果都不同，但是上面defer执行顺序都是相同的，都是按照LIFO先进后出执行，
		都是在return执行前执行，先输出打印后，再输出打印中，再输出打印前
		panic英文字面意思是恐慌，意思。程序恐慌了，害怕了，程序异常。但是经过多次运行发现，
		panic都在抢运行优先级。
		所以总结。defer和panic一起使用。会出现panic和defer抢优先级问题。
		*/
